package com.eascs.workflow.wf.service;

import java.util.List;
import java.util.Map;

import com.eascs.workflow.common.entity.wf.NodeTransferResult;
import com.eascs.workflow.common.entity.wf.ProcessTaskMain;
import com.eascs.workflow.common.vo.CancleProcessParam;
import com.eascs.workflow.common.vo.CloseProcessParam;
import com.eascs.workflow.common.vo.ModelResult;
import com.eascs.workflow.common.vo.WFRequestParam;
import com.eascs.workflow.wf.vo.TransferNodeParam;

public interface WFProcessService {
	/**
	 * 流程启动
	 * 
	 * @param requestParam
	 * @return
	 */
	public ModelResult<ProcessTaskMain> instance(WFRequestParam requestParam);

	/**
	 * 节点审核
	 * @param transferNodeParam
	 * @return
	 */
	public ModelResult<NodeTransferResult> transferNode(TransferNodeParam transferNodeParam);

	/**
	 * 节点审核
	 * 
	 * @param transferNodeParam
	 * @return
	 */
	public ModelResult<Boolean> transferNodeWithAuto(TransferNodeParam transferNodeParam);

	/**
	 * 流程关闭
	 * 
	 * @param closeProcessParam
	 * @return
	 */
	public ModelResult<Boolean> closeProcess(CloseProcessParam closeProcessParam);

	/**
	 * 获取流程审核人
	 * 
	 * @param processType
	 * @param orgNo
	 * @return
	 */
	public List<Map<String, Object>> getProcessAuditors(String processType, String orgNo);

	public ModelResult<Boolean> cancelProcess(CancleProcessParam param);
}
